package lexical;

/**
 * 表示单词符号的二元组
 * 关键字 一字一种
 * 运算符 一符一种
 */
public class Token {

    // 种别
    int kind;

    // 值（变量名）
    String stringVal;

    // 位置
    int pos;

    String name;

    public Token(TokenKind type) {
        this.kind = type.kind_id;
        this.stringVal = type.stringVal;
        this.name = type.name;
    }

    public Token(TokenKind type, String stringVal) {
        this.kind = type.kind_id;
        this.stringVal = stringVal;
        this.name = type.name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return String.format("<%s, %s>", this.name, this.stringVal);
    }

    public int getKind() {
        return kind;
    }

    public void setKind(int kind) {
        this.kind = kind;
    }

    public String getStringVal() {
        return stringVal;
    }

    public void setStringVal(String stringVal) {
        this.stringVal = stringVal;
    }

    public int getPos() {
        return pos;
    }

    public void setPos(int pos) {
        this.pos = pos;
    }
}
